package com.freemalll.merchant.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.freemalll.merchant.domain.entity.MerMerchant;

import java.util.List;

/**
 * 服务层。
 *
 * @author songshixiong
 * @since 2025-05-14
 */
public interface MerMerchantService extends IService<MerMerchant> {

    /**
     * 检查是否存在商户
     *
     * @param limitTheNumberOfDays 限制天数
     * @param licenseCode          营业执照编号
     * @param authStatus           审核状态
     * @return
     */
    boolean checkIfThereIsAMerchantPresent(int limitTheNumberOfDays, String licenseCode, List<String> authStatus, String merId);

    /**
     * 检查商户初审拒绝或复审拒绝是否超过限制天数
     *
     * @param merId                商户id
     * @param limitTheNumberOfDays 限制天数
     * @param authStatus           审核状态
     * @return
     */
    boolean checkReturnTime(String merId, int limitTheNumberOfDays, String authStatus);

    /**
     * 校验商户名称是否存在，校验对象为authStatus 中包含的审核状态
     *
     * @param merchantName
     * @param authStatus
     * @return
     */
    boolean checkMerName(String merchantName, List<String> authStatus, String merId);

    /**
     * 校验商户营业执照是否存在，校验对象为authStatus 中包含的审核状态
     *
     * @param licenseCode
     * @param authStatus
     * @return
     */
    boolean checkMerchantLicenseCode(String licenseCode, List<String> authStatus, String merId);

    /**
     * 校验商户名称是否存在，校验对象为authStatus 中包含的审核状态
     *
     * @param limitTheNumberOfDays
     * @param merchantName
     * @param list
     * @return
     */
    boolean checkMerNameAndLimitDay(int limitTheNumberOfDays, String merchantName, List<String> list, String merId);

    /**
     * 校验商户简称是否存在，校验对象为authStatus 中包含的审核状态
     *
     * @param merchantName
     * @param authStatus
     * @return
     */
    boolean checkMerShortName(String merchantName, List<String> authStatus, String merId);

    /**
     * 校验商户简称是否存在，校验对象为authStatus 中包含的审核状态
     *
     * @param limitTheNumberOfDays
     * @param merchantName
     * @param authStatus
     * @return
     */
    boolean checkMerShortNameAndLimitDay(int limitTheNumberOfDays, String merchantName, List<String> authStatus, String merId);
}
